from datetime import date, datetime

# 获取用户输入（月-日）
birth_date_str = input("请输入您的出生日期（格式：月-日，例如：07-30）：")

try:
    # 解析输入为月和日
    month, day = map(int, birth_date_str.split('-'))

    # 验证日期有效性
    try:
        datetime(2024, month, day)  # 使用闰年进行验证（确保2月29日有效）
    except ValueError:
        raise ValueError("无效的日期")

    # 获取当前日期
    today = date.today()

    # 计算今年的生日
    this_year_birthday = date(today.year, month, day)

    # 处理2月29日的特殊情况
    if month == 2 and day == 29:
        # 如果今年不是闰年，使用2月28日
        if not (today.year % 4 == 0 and (today.year % 100 != 0 or today.year % 400 == 0)):
            this_year_birthday = date(today.year, 2, 28)

    # 计算下一个生日
    if this_year_birthday >= today:
        next_birthday = this_year_birthday
    else:
        next_year = today.year + 1
        next_birthday = date(next_year, month, day)

        # 处理下一年2月29日的特殊情况
        if month == 2 and day == 29:
            if not (next_year % 4 == 0 and (next_year % 100 != 0 or next_year % 400 == 0)):
                next_birthday = date(next_year, 2, 28)

    # 计算距离下一个生日的天数
    days_left = (next_birthday - today).days

    print(f"距离您的下个生日还有 {days_left} 天")

except ValueError as e:
    print(f"输入错误：{e}")
except Exception as e:
    print(f"发生错误：{e}")